/*
 * vendedores_service.cpp
 *
 */

#include "../channel_common/ChannelInterface.h"
#include "../IPC/ProcessAux.h"
#include "../common/Argv.h"
#include "../../IPC/MessageQueue.h"
#include "../logger/logger.h"
#include "../../middleware/CommunicationVendedor.h"
#include "../capa_servicios_distribuidos/QueueLauncher.h"
#include "../channel_common/agent_address_service/AgentAddressService.h"

int main(int argc, char**argv)
{
	std::string hostName = "vendedores_libres_service_pc";

	int pedidoVendedorLibreId = channel::AgentAddressService::registerNameStatic("vendedores_libres_service_req");
	int informarVendedorLibreId = channel::AgentAddressService::registerNameStatic("informar_vendedores_libres_service");

	Argv args;
	args.pushArg(hostName);
	channel::ChannelInterface::create(hostName);

	ProcessAux::launchProcess2("./out/channel_out_agente",1,args);
	ProcessAux::launchProcess2("./out/channel_in_agente",1,args);

	servicios_distribuidos::QueueLauncher::createDistributedQueueByUid<middleware::CommunicationVendedor::AvailableVendedorStruct>
		(middleware::CommunicationVendedor::UIDVendedorAvailable,hostName,servicios_distribuidos::QUEUE_RECV, pedidoVendedorLibreId);
	servicios_distribuidos::QueueLauncher::createDistributedQueueByUid<middleware::CommunicationVendedor::AvailableVendedorStruct>
		(middleware::CommunicationVendedor::UIDVendedorAvailable,hostName,servicios_distribuidos::QUEUE_RECV, informarVendedorLibreId);

	servicios_distribuidos::QueueLauncher::createDynamicDistributedQueueByUid<middleware::CommunicationVendedor::VendedorReplyStruct>
			(middleware::CommunicationVendedor::UIDVendedorReply,hostName,servicios_distribuidos::QUEUE_SEND);
}

